import 'package:flutter_admin/pages/common/cry/model/page_model.dart';
import 'package:flutter_admin/pages/common/cry/model/response_body_api.dart';
import 'package:flutter_admin/utils/kwargs.dart';
import 'package:flutter_admin/utils/odoo_http_util.dart';

class SaleInquiryProductOdooApi {
  static Future<ResponseBodyApi> page({data}) async {
    ResponseBodyApi responseBodyApi;
    List domainList = data['domainList'];
    Kwargs recordsKwargs = Kwargs(
      domain: domainList,
    );
    if (data['type'] == 'browse') {
      try {
        var records = await OdooHttpUtil.callKw(
          model: 'sale.inquiry.product',
          method: 'pro_search',
          kwargs: recordsKwargs.toMap(),
        );
        List<Map<String, dynamic>> list = [];
        records.forEach((element) {
          Map<String, dynamic> map = element;
          list.add(map);
        });
        responseBodyApi = ResponseBodyApi(success: true, data: records);
      } catch (e) {
        responseBodyApi =
            ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
      }
    } else {
      try {
        PageModel pageModel = data['page'];
        List domainList = data['domainList'];
        Kwargs recordsKwargs = Kwargs(
            domain: domainList,
            limit: pageModel.size,
            offset: (pageModel.current - 1) * pageModel.size,
            order: pageModel.orders[0].column! +
                " " +
                (pageModel.orders[0].asc! ? "asc" : "desc"));
        var records = await OdooHttpUtil.callKw(
          model: 'sale.inquiry.product',
          method: 'pro_search',
          kwargs: recordsKwargs.toMap(),
        );
        var total = await OdooHttpUtil.callKw(
          model: 'sale.inquiry.product',
          method: 'pro_search_count',
          kwargs: {"domain": domainList},
        );
        List<Map<String, dynamic>> list = [];
        records.forEach((element) {
          Map<String, dynamic> map = element;
          list.add(map);
        });
        pageModel.records = list;
        pageModel.total = total;
        pageModel.pages = total ~/ pageModel.size + 1;
        responseBodyApi = ResponseBodyApi(success: true, data: pageModel);
      } catch (e) {
        responseBodyApi =
            ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
      }
    }

    return responseBodyApi;
  }

  static Future<ResponseBodyApi> removeByIds(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      await OdooHttpUtil.callKw(
          model: 'sale.inquiry.product', method: "unlink", args: [data]);
      responseBodyApi = ResponseBodyApi(success: true);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> saveOrUpdate(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      if (data["id"] == null) {
        await OdooHttpUtil.callKw(
            model: 'sale.inquiry.product', method: 'create', args: [data]);
      } else {
        await OdooHttpUtil.callKw(
            model: 'sale.inquiry.product',
            method: 'write',
            args: [
              [data["id"]],
              data
            ]);
      }
      responseBodyApi = ResponseBodyApi(success: true);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> savePrice(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      await OdooHttpUtil.callKw(
          model: 'sale.inquiry.product',
          method: 'write',
          args: [
            [data["id"]],
            data
          ]);

      responseBodyApi = ResponseBodyApi(success: true);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }
}
